package com.flute.haflute.jobbox.master;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import com.flute.haflute.jobbox.communication.NotifyService;

/**
 * 通知器管理者，所有的消息通知器注册登记，便于管理
 */
public class NotifyServiceManager {

	private static List<NotifyService> serviceCache = new ArrayList<NotifyService>();

	/** 登记service到消息器池 */
	public static void add2ServiceCache(NotifyService service) {
		serviceCache.add(service);
	}

	/** 取得所有的消息器 */
	public static List<NotifyService> getFromServiceCache() {
		return serviceCache;
	}

	/** 向所有的消息器发送子节点失效消息，不再向这个子节点发送消息 */
	public static void unRegisterChild(String childId) throws RemoteException {
		for (NotifyService service : serviceCache) {
			service.unRegister(childId);
		}
	}

	/** 向所有的消息器发送子节点失效消息，不再向子节点发送消息 */
	public static void unRegisterChilds(List<String> childIds)
			throws RemoteException {
		for (String child : childIds) {
			unRegisterChild(child);
		}
	}
}
